home *** CD-ROM | disk | FTP | other *** search
/ Multimedia Selection / Multimedia Selection Volume One - CD-ROM / MULTIMEDIA SELECTION____________.ISO / utils / pcrypt70 / pc-crypt.doc < prev    next >
Encoding:
Text File  |  1993-08-20  |  26.8 KB  |  539 lines

  1.                                                            Cover
  2.                              PC-CRYPT
  3.  
  4.                 Data Encryption and Decryption Program
  5.       Version 7.0  20 August 1993  Supercedes all prior versions
  6.  
  7.                         Copyright 1993 by
  8.                         James T. Demberger
  9.                    9862 Lake Seminole Drive West
  10.                         Seminole, FL  34643
  11.                             813-397-2930
  12.  
  13.      PC-CRYPT is a user supported program.  You are encouraged to
  14. copy and share this program with other users so long as the program is
  15. not distributed in modified form and this notice is not bypassed or
  16. removed.
  17.  
  18.      PC-CRYPT is NOT a public domain program.  The program and
  19. documentation for PC-CRYPT may be freely copied for archive or working
  20. copies for personal non-profit use as outlined in copyright regulations.
  21. PC-CRYPT may be made available thru clubs or user groups, program
  22. libraries or on remote access data bases or bulletin boards.
  23.  
  24.                              Disclaimer
  25.  
  26.      The PC-CRYPT program and associated documentation is provided on an
  27. "as is" basis without warranty of any kind, expressed or implied. Anyone
  28. using this software assumes all risks as to the quality and performance
  29. of the software.  The author disclaims all liability for any special,
  30. incidental, consequential, direct or indirect damages due to either
  31. proper and improper use of the program.
  32.  
  33.                           Table of Contents
  34.  
  35.             Introduction  - - - - - - - - - - - - - - 1
  36.             System Requirements - - - - - - - - - - - 1
  37.             Vernam Encryption - - - - - - - - - - - - 1
  38.             Functional Outline of PC-CRYPT  - - - - - 2
  39.                Keyword Input  - - - - - - - - - - - - 2
  40.                Random Number Generator  - - - - - - - 2
  41.                Keyfile Generation - - - - - - - - - - 3
  42.                Encryption and Decryption  - - - - - - 3
  43.                Using Keyfiles as One-Time-Pads  - - - 3
  44.             Running PC-CRYPT from Menu  - - - - - - - 4
  45.                Select Keyword - - - - - - - - - - - - 4
  46.                PC-CRYPT Menu  - - - - - - - - - - - - 5
  47.                Encrypt & Decrypt Test Strings - - - - 5
  48.                Processing Disk Files  - - - - - - - - 5
  49.             Running PC-CRYPT from Command Line  - - - 5
  50.             Transmitting Encrypt Files  - - - - - - - 6
  51.             Double Encryption - - - - - - - - - - - - 6
  52.             Keyword Security  - - - - - - - - - - - - 7
  53.             Are PC-CRYPT Encrypt Files Unbreakable? - 7
  54.             Commercial User License - - - - - - - - - 7
  55.             Pseudo Basic Code for PC-CRYPT  - - - - - 8
  56.             Miscellaneous Notes - - - - - - - - - - - 9
  57.  
  58.                                                                  Page 1
  59.                             Introduction
  60.  
  61.      The program has three main functions:
  62.      a:  Demonstration of the Vernam encryption and decryption process.
  63.      b:  Outline operation of program and algorithms used by the program.
  64.      c:  Encryption and decryption of disk files using Vernam encryption
  65.          and decryption combined with use of random keyfiles.
  66.  
  67.                          System Requirements
  68.  
  69.      The program requires an IBM computer or compatible running DOS with
  70. color or monochrome display and one or more disk drives.  File storage
  71. space must be available equal to twice the size of the largest file to
  72. be encrypt or decrypt.
  73.  
  74.                           Vernam Encryption
  75.  
  76.      In 1917, long before the age of electronic computers, Gilbert S.
  77. Vernam developed an encryption process for messages punched in paper
  78. tape using Baudot or five channel teletype code.  He used the
  79. electro-mechanical equivalent of a logical exclusive OR operation (XOR)
  80. on each character code in a message tape and a corresponding random
  81. character code in a key tape to produce a third tape with the encrypt
  82. message.  Decryption used the same process except that a tape with the
  83. encrypt message and a copy the key tape were XORed to produce the
  84. decrypt message.  PC-CRYPT uses essentially the same process to encrypt
  85. and decrypt disk files.  Each character in a clear text file is XORed
  86. with the corresponding character in a virtual file of random eight-bit
  87. codes to produce a cipher text file. The program uses the same virtual
  88. file to decrypt the cipher text file and produce a copy of the original
  89. clear text file.
  90.  
  91.      One problem with the original Vernam process related to the key
  92. tapes.  For a secure system, the characters in the key tapes had to be
  93. in random order and the number of characters in a key tape had to exceed
  94. the number of characters in the message to be encrypt.  A duplicate of
  95. key tapes had to furnished to anyone who needed to decrypt messages. The
  96. physical security of the miles of paper tape was another problem.
  97. PC-CRYPT can generate thousands of different virtual random keys with
  98. lengths of 14,457,349 bytes.  There is no need to store these virtual
  99. keys since each of the virtual keys can be regenerated when required for
  100. decryption of cipher text files.
  101.  
  102.      The eXclusive OR function (XOR) performed by Vernam encryption and
  103. decryption used by PC-CRYPT is "blind" as to the data in the input file.
  104. Any input file is XORed to produce an output file.  If a clear text file
  105. is used as the input file, a cipher text output file is created.  If a
  106. cipher text file is used as the input file, a copy of the original clear
  107. text file is created.
  108.                                                                 Page 2
  109.                    Functional Outline of PC-CRYPT
  110.  
  111.      The following four sections outline the functional operation of
  112. PC-CRYPT.  The functional operation of the program in the form of pseudo
  113. Basic source code is shown on Pages 8 and 9.  A reasonably proficient
  114. programmer, using this text and the pseudo source code, should be able
  115. to write a program in Basic or some other high level language that would
  116. have the same functionality as PC-CRYPT.
  117.  
  118.                          Keyword Input
  119.  
  120.      PC-CRYPT uses a keyword input routine to read an eight character
  121. keyword or password.  More than eight characters can be enter for the
  122. keyword, the excess characters are ignored.  The keyword input code
  123. treats the first eight character entered as four hexadecimal characters.
  124. The first three pairs of characters are used to set values for the
  125. pointers used for keyfile generation and the fourth pair to set a value
  126. for a seed for the random number generator.  The MOD function is used to
  127. reduce the maximum value for the pointers to 239 for the first pointer,
  128. to 241 for the second pointer and to 251 for the third pointer.  The
  129. value for the seed for the random number generator ranges from 0 to 255.
  130.  
  131.      The keyword input code accepts characters other than the normal hex
  132. characters 0 thru 9 and A thru F however these other characters do not
  133. enter into the conversion to decimal values for the pairs of hex
  134. characters.  The use of other than normal hex characters for the keyword
  135. can be used to "hide" the characters actually used as pointer values.
  136. For example, the Social Security Number 214-35-1234 converts to pointer
  137. numbers 34, 5, 54 and 0.  ZIP code + four numbers might also be used
  138. to conceal the pointer numbers.  The program has a display capability
  139. that can be used to analyze the conversion process for the hexadecimal
  140. codes to decimal values.
  141.  
  142.                        Random Number Generator
  143.  
  144.      The random number generator used by PC-CRYPT is a pseudo random
  145. number generator that will create an array or string of 256 random
  146. numbers.  The random numbers in each array range in value from 0 to 255
  147. with only one occurrence of each random number in each array.  One unique
  148. array is created for each of the seed numbers from 0 to 255.
  149.  
  150.     Since this pseudo random generator uses only integer values for
  151. input and output, there is no precision problem such as would occur with
  152. random number generators that have fractional numbers as output.  The
  153. compiled 8086/8088 machine code in the PC-CRYPT executable file works
  154. the same way and produces the same random array for the same seed number
  155. when run on a any computer system using a 80X86 processor.
  156.                                                                 Page 3
  157.                        Keyfile Generation
  158.  
  159.      PC-CRYPT creates virtual random keyfiles.  Each character of a
  160. keyfile is generated as required using three numbers from an array of
  161. 256 random numbers.  Each of the virtual keyfiles may be as long as
  162. 14,457,349 bytes.  The length is the result of recycling the random
  163. numbers in the random number array using three nested loops with
  164. counters that are reset to 1 after 239, 241 or 251 cycles.  You might
  165. note that 14,457,349 is the least common multiple of the three prime
  166. numbers 239, 241 and 251.
  167.  
  168.      The initial counter or pointer settings are determined by three
  169. values calculated from the keyword.  Keyfile generation start at the
  170. three random numbers pointed to by the initial pointer values.  Since
  171. each of the initial pointer values in effect defines a different virtual
  172. keyfile, there are 14,457,349 potential keyfiles.
  173.  
  174.      A key character is a random number resulting from the XOR operation
  175. on the three random numbers in the random number array pointed to by the
  176. current value of the three pointers.  If we were to assume that the
  177. random number in the first position of the random number array was a
  178. zero and that initial setting of each of the three array  pointers was
  179. 1, the value of the key character would be a "natural" zero (as compared
  180. to a "calculated" zero that results from 1 XOR 2 XOR 3).  Assuming
  181. further that there was no other occurrence of a zero in the random number
  182. array, the next "natural" zero (as opposed to a "calculated" zero) will
  183. not occur until the pointer values all have a value of 1.  Key
  184. characters with "calculated" zero value will probably occur at random
  185. intervals during the keyfile generation.
  186.  
  187.      Again assuming that the initial values of the three pointers was 1,
  188. the pointer values will simultaneously return to 1 when the first
  189. pointer value has recycled thru the random number array 60,491 times,
  190. the second pointer value has recycled 59,989 times and the third pointer
  191. has recycled 57,599 times.  This will occur after 14,457,349 key
  192. characters have been generated if the length of the clear text file is
  193. 14,457,349 bytes or longer in length.
  194.  
  195.                     Encryption and Decryption
  196.  
  197.      Any file input/output method can be used to read the clear or
  198. cipher text input files and to write the cipher or clear text output
  199. files.  The method used by PC-CRYPt reads sequential 512 byte blocks
  200. into a character string array and creates the encrypt or decrypt text in
  201. another 512 byte character string array.  If the length of the input
  202. file is not a multiple of 512, a "short" or partial block is processed
  203. as the last block.  Each sequential character of an input block is XORed
  204. with the next sequential key character from the virtual key file to
  205. produce the corresponding sequential character in the output string.
  206.  
  207.                  Using Keyfiles as One-Time-Pads
  208.  
  209.      One-Time-Pad (OTP) encryption systems are considered unbreakable.
  210. A virtual keyfile generated by PC-CRYPT is in effect a OTP so long as
  211. the keyword used to generate the keyfile is never reused.  In theory,
  212.                                                                 Page 4
  213.  
  214. someone with a copy of the program could try all of the keywords that
  215. might have been used and by looking at the decrypt output, eventually
  216. "find" the keyword that was used to encrypt the clear text.  In
  217. practice, this "brute force" decryption would probably be totally
  218. impractical since the number of possible keywords is 3,701,081,344
  219. (239*241*251*256).
  220.  
  221.                        Running PC-CRYPT from Menu
  222.  
  223.      From DOS ready key [dr:][\path\]PC-CRYPT then press the Enter key.
  224.  
  225.      A default option is shown for the response to most prompts
  226. displayed by the program.  As an example, a prompt for a yes or no
  227. response will display "y/N".  Press Enter to take the no default option
  228. indicated by the upper case N.  Either a lower case y or an upper case Y
  229. must be pressed for the yes response.  If only lower case options or no
  230. option is shown, an entry other than the Enter key must be used.
  231.  
  232.      The first two screens display information about the program. These
  233. displays are followed by the keyword entry display:
  234.  
  235.                               SELECT KEYWORD
  236.  
  237.             Press Enter for No visible display of Keyword OR
  238.             Press K for a visible display of Keyword only OR
  239.             Press D for display of pointers and random numbers K
  240.  
  241.                      Old Keyword is
  242.  
  243.             Enter new 8 character (hex) Keyword AaBbCcDd
  244.  
  245.                      Press any key to continue _
  246.  
  247.      Press the Enter key for the no visible display of the keyword as it
  248. is being entered if you don't want someone looking over your shoulder to
  249. see the keyword.  Press the K key to display both the currently selected
  250. keyword and the new keyword being entered.  An error message will be
  251. displayed if less than eight characters were entered before the Enter
  252. key was pressed.
  253.  
  254.      Press the D key for a visible display of the keywords and a display
  255. of the hexadecimal and the decimal values for the loop pointers and
  256. random number seed and the numbers in the random number array.  If both
  257. of the character in a pair are the characters 0 thru 9 and A thru F
  258. (either upper or lower case), the equivalent decimal value for the hex
  259. pair is displayed.  If neither of the characters is a hex character, the
  260. conversion results in a decimal zero.  Combinations of one hex character
  261. and one non-hex character may convert to a zero or some value from 0 to
  262. 15.  The 256 random numbers generated using the seed for the random
  263. number generator are displayed on the next 13 lines.
  264.                                                                 Page 5
  265.                        PC-CRYPT Menu
  266.  
  267.                K  Select Keyword
  268.                T  Turn Timer On/Off
  269.                S  Encrypt & Decrypt Test Strings
  270.                F  Process Disk Files
  271.                X  Exit/End Program
  272.  
  273.                   Enter Option Letter _
  274.  
  275.      Press K for the Select Keyword option if you wish to change the
  276. keyword originally entered during the initial Select Keyword display.
  277.  
  278.      Press T for a prompt to turn on or off a timer that will total
  279. number of characters encrypt or decrypt and the total time required.
  280. The total time is for encryption or decryption only and does not include
  281. time for reading and writing files.  The program uses these totals to
  282. compute and display the thruput in characters per second.
  283.  
  284.                 Encrypt & Decrypt Test Strings
  285.  
  286.      The Encrypt & Decrypt Test Strings option displays a submenu from
  287. which you may select four different types of character strings for
  288. encryption and decryption.  The clear text, cipher text and decrypt text
  289. strings are displayed.  This option is primarily used to look at the
  290. pattern of characters produced when you encrypt strings of upper case,
  291. lower case and numeric characters.  Key board input of test records
  292. accepts ASCII codes entered with the Alt key and numeric keys. In some
  293. cases, a character may be encrypt as the same character. This is not an
  294. error; it demonstrates that the XOR function is really working as it
  295. should.
  296.  
  297.                          Process Disk Files
  298.  
  299.      When you select this option the following prompts and message will
  300. be displayed:
  301.  
  302.            Enter Input  [dr:][\path\]filename.ext
  303.  
  304.            Enter Output [dr:][\path\]filename.ext
  305.  
  306.                    Processing ___ bytes
  307.  
  308.      A period (.) is printed as each 512 bytes of a file is processed.
  309. Total processing time and bytes per second is displayed if the timer
  310. option has been turned on.
  311.  
  312.                 Running PC-CRYPT from Command Line
  313.  
  314.       If your only need is to encrypt or to decrypt existing files,
  315. PC-CRYPT may be run from the DOS command line by entering the
  316. keyword, the input filename and the output filename.  A command
  317. line example follows:
  318.  
  319. PC-CRYPT /KW=keyword /FI=dr:\path\fname.ext /FO=dr:\path\fname.ext
  320.                                                                 Page 6
  321.       The command line parameters must be entered in the order shown;
  322. /KW=keyword, /FI=filename for the file to be encrypt or the file
  323. to be decrypt, and /FO=filename for the encrypt file or the decrypt
  324. file.  There is no output shown on the display nor is any other
  325. input required other than the parameters entered on the command line.
  326.  
  327.                        Transmitting Encrypt Files
  328.  
  329.      An encrypt data file may be sent to another system for decryption
  330. using a communications link or as a disk file.  Since encrypt data files
  331. may contain character strings corresponding to transmission control
  332. codes, encrypt files should be transmitted as eight bit binary files
  333. using XMODEM or some equivalent transmission protocol for binary files.
  334. File compression utilities will probably not compress encrypt files or
  335. only compress these files by a very small percentage.
  336.  
  337.                            Double Encryption
  338.  
  339.      The cipher text produced with PC-CRYPT is probably unbreakable.
  340. However there is the possibility that a sufficiently fast and powerful
  341. computer using an automated brute force decryption system combined with
  342. some technique for clear text recognition might permit the decryption of
  343. a file.  Double encryption can be implemented by encrypting a cipher
  344. text file a second time with a keyword different from that used for the
  345. first encryption.  The same two keywords must be used to decrypt the
  346. double encrypt data.  Use of any text recognition method is defeated by
  347. double encryption since there is no way to determine which of the many
  348. files produced by any attempt at decryption is really the target cipher
  349. file rather than a file of computer generated "garbage".
  350.  
  351.       As an alternative to using two passes for double encryption, the
  352. program could be modified to use two different keywords simultaneously.
  353. The XORed character output from the first keyword would be XORed with
  354. the key character generated from the second keyword.
  355.  
  356.      A much simpler double encryption system is possible thru the use of
  357. password protected compressed files.  The widely used PKZIP/PKUNZIP
  358. compression utility programs can be used to prepare password protected
  359. files that are probably as secure as the files produced by PC-CRYPT.  A
  360. second layer of encryption using PC-CRYPT is just additional insurance
  361. that the encryption is unbreakable.  The short string of characters for
  362. the filename found in compressed files is not long enough to
  363. permit brute force decryption of an encrypt compressed file since the
  364. remainder of the compressed file looks like a string of random
  365. characters with no discernible pattern.
  366.                                                                 Page 7
  367.                         Keyword Security
  368.  
  369.      The security of keywords or passwords is the most important factor
  370. in the use of private key encryption systems.  In the case of PC-CRYPT,
  371. there is nothing secure about the form of a keyword - security comes
  372. from the fact that the four hexadecimal numbers represent 3,701,081,344
  373. usable keywords.  Changing just one out of the four hex character by
  374. incrementing it by one on a daily basis will provide enough different
  375. keywords to last for eight months or more.
  376.  
  377.      There are many different method for distribution of keywords depending
  378. on the number of users that require knowledge of the keywords.  Lists of
  379. keywords for use by different users can be distributed by means of an
  380. encrypt file for which each user has been furnished the initial keyword.
  381. I'll leave how to handle the distribution of the initial keyword up to
  382. to those who are going to make use of PC-CRYPT.
  383.  
  384.                   Are PC-CRYPT Encrypt Files Unbreakable?
  385.  
  386.      The algorithm used by the pseudo random number generator and the
  387. method used to generate the 14,457,349 byte pseudo random keyfiles in
  388. PC-CRYPT are public knowledge.  A PC-CRYPT cipher text file is breakable
  389. only in the sense that it is known that one of the 3,701,081,344
  390. possible keywords will decrypt the file.  Had the "clear text" for a
  391. file been a cipher text file (double encryption), any brute force "try
  392. every possible keyword" attempt at decryption will produce millions of
  393. files of which none can be recognized as the "broken" cipher text file.
  394.  
  395.      Neither the array of 256 numbers used by the program nor the
  396. 14,457,349 byte keyfiles are truly random since two copies of the
  397. PC-CRYPT program will produce the same array of 256 numbers and the same
  398. keyfile when the same keyword is used.  A cipher text file produced by
  399. the program is truly random so long as the clear text is not known. A
  400. clear text file known to have long strings of the space character or
  401. repeated strings of text will not produce any discernible pattern of
  402. characters in the cipher text file.  In those cases where there is a
  403. need to encrypt a file longer than 14,457,349 bytes in length, there
  404. will be nothing discernible in the cipher text file to indicate the
  405. actual point where the keyfile is recycled.
  406.  
  407.      Cipher text files produced with Vernam encryption using a random
  408. keyfile with a length equal to or greater that the clear text to be
  409. encrypt are considered to unbreakable unless the keyfile is known.
  410. Cipher text files produced using a random One-Time-Pad keyfile for
  411. encryption are considered to be unbreakable so long as the random
  412. One-Time-Pad file is not reused.  The cipher text files produced by the
  413. PC-CRYPT program meet the conditions required to be considered to be
  414. unbreakable for both Vernam and One-Time-Pad encryption.
  415.  
  416.                       Commercial User License
  417.  
  418.      No registration or license is required for personal non-profit use
  419. of the PC-CRYPT program.  A $25.00 license fee for commercial users has
  420. been set just to find out if there are honest commercial users who want
  421. to use the program instead of having house programmers write a
  422. functionally equivalent program.
  423.                                                                 Page 8
  424.                      Pseudo Basic Code for PC-CRYPT
  425.  
  426.      The following pseudo Basic source code outlines keyword input
  427. processing, random number generation and XOR encryption of disk files.
  428. These are the three essential routines used by the PC-CRYPT to produce
  429. cipher text files and to decrypt cipher text files.  I am not releasing
  430. the Basic source code for a variety of reasons, several of which are:
  431.  
  432. a)  The source code was written using PowerBASIC and it probably will
  433.       require considerable modification before it will run using other
  434.       more common dialects of Basic.
  435. b)  The program contains a lot of testing and debugging code that is not
  436.       relevant to the normal operation of the program.
  437. c)  The program is written in unstructured "spaghetti" Basic code and I
  438.       don't have the time to "clean it up" to the point where it would not
  439.       invite negative comments regarding my profeciency as a programmer.
  440. d)  Knowledge of the internal operation of the program is not required
  441.       in order to evaluate the validity of the methods used file
  442.       encryption and decryption.  Users can write their own programs
  443.       incorporating the following pseudo code with the assurance that
  444.       the encryption methods used will produce unbreakable cipher text.
  445.  
  446.      rem Keyword Input
  447.  
  448.      rem Input is 8 hex(?) characters in variable Key.word$
  449.  
  450.      P.W1$ = MID$(Key.word$,1,2):  P.W1$ = "&h" + P.W1$
  451.      P.W2$ = MID$(Key.word$,3,2):  P.W2$ = "&h" + P.W2$
  452.      P.W3$ = MID$(Key.word$,5,2):  P.W3$ = "&h" + P.W3$
  453.      P.W4$ = MID$(Key.word$,7,2):  P.W4$ = "&h" + P.W4$
  454.  
  455.      Point.1 = VAL (P.W1$) MOD 239 + 1
  456.      Point.2 = VAL (P.W2$) MOD 241 + 1
  457.      Point.3 = VAL (P.W3$) MOD 251 + 1
  458.      Random.No.Pointer = VAL (P.W4$) MOD 256
  459.  
  460.      rem output is Point.1 = (1,2,....,238,239)
  461.      rem           Point.2 = (1,2,....,240,241)
  462.      rem           Point.3 = (1,2,....,250,251)
  463.      rem           Random.No.Pointer = (0,1,....,254,255)
  464.  
  465.      rem Random Number Generator
  466.  
  467.      rem start of loop to generate 256 pseudo random numbers
  468.      SEED = Random.No.Pointer
  469.      FOR INDEX = 1 TO 256
  470.  
  471.      rem next three statements generate pseudo random numbers
  472.      rem  that range in value from 0 to 255
  473.      SEED = (SEED * 997) + 32771
  474.      SEED = SEED - (INT (SEED / 32768) * 32768)
  475.      SEED = FIX (SEED) MOD 256
  476.  
  477.      rem this line puts the random numbers in a 256 byte array Random.Nos
  478.      Random.Nos (INDEX) = SEED
  479.  
  480.      rem end of loop to generate 256 pseudo random numbers
  481.      NEXT INDEX
  482.                                                                 Page 9
  483.  
  484.      rem Key File Generation and File Encryption and Decryption
  485.  
  486.      rem use LOF to determine number character in file to be processed
  487.      Length.Input = LOF(INPUT.FILE)
  488.      Main.Loop = 1
  489.  
  490.      Do While Main.Loop <= Length.Input
  491.  
  492.      rem code to read input characters from INPUT.FILE
  493.      Input.Char = INPUT.FILE (Main.Loop)
  494.  
  495.      rem  values for (Point.x) from Keyword Input
  496.      rem  Random.Nos array from Random Number Generator
  497.      rem  Key.Character created by XOR operation on three numbers from
  498.      rem    Random.Nos array
  499.      rem  next line continues (_) to second line following
  500.      Key.Character = _
  501.      Random.Nos(Point.1) XOR Random.Nos(Point.2) XOR Random.Nos(Point.3)
  502.  
  503.      rem increment counters and test for reset
  504.      Point.1 = Point.1 + 1:  IF Point.1 > 239 THEN Point.1 = 1
  505.      Point.2 = Point.2 + 1:  IF Point.2 > 241 THEN Point.2 = 1
  506.      Point.3 = Point.3 + 1:  IF Point.3 > 251 THEN Point.3 = 1
  507.  
  508.      rem Code to XOR input character with Key.Character goes here
  509.      Output.Char = Input.Char XOR Key.Character
  510.  
  511.      rem Code to write output character to OUTPUT.FILE
  512.      OUTPUT.FILE (Main.Loop) = Output.Char
  513.  
  514.      rem increment main loop counter
  515.      Main.Loop = Main.Loop + 1
  516.  
  517.      DO END
  518.  
  519.                            Miscellaneous Notes
  520.  
  521.       Cipher text files produced with Version 6 of PC-CRYPT use the same
  522. random number generator and XOR processing as Version 7 of PC-CRYPT
  523. however the keyword input processing is entirely different.  Any archive
  524. type files encrypt with Version 6 should be decrypt and then reencrypt
  525. with Version 7.
  526.  
  527.       There are Federal Government regulations restricting the export of
  528. "encryption devices".  I do not know if, under these regulations, the
  529. PC-CRYPT program would be classified as an "encryption device".
  530.  
  531.       The PC-CRYPT program uses the four hexidecimal values in the keyword
  532. to assign values to the three pointer and the random number seed in 1234
  533. order.  Changing the order in which the four hexidecimal values are used
  534. to assign values to the three pointers and the random number seed can be
  535. used to create 23 additional variations of the program.
  536.  
  537.  
  538.  
  539.